Задачи:
1. Ваня и любимые буквы
2. Смена регистра
3. Проблемная клавиатура
4. Цифры
5. Повторяющиеся пробелы
6. Собственный язык
7. Строка AB
8. Сумма цифр
9. Разделительная L
10. Сломанная клавиатура:
11. Перевод с/с
12. Длинные числа
13. Отрезок
14. Римские числа
Таблицу символов можно посмотреть здесь
Все знают, что Ваня очень любит буквы f и d, поэтому он обрадуется, если в тексте задачи по программированию будут обе эти буквы.
Вам показали этот текст, определите, обрадуется ли Ваня
или нет.
Входные данные:
Первая строка содержит одно целое число N (1 ≤ N ≤ 10^3) - длина строки.
Вторая строка содержит текст по программированию.
Выходные данные:
Выведите yes, если Ваня обрадуется, иначе no.
Пример:
Ввод | Вывод |
8 steDhfkd |
yes |
7 frwvFSn |
no |
В этой задаче мы должны пройти по массиву символов и сравнить каждый элемент с символом 'f' и 'd'. Если находим хоть одну букву f, то меняем переменную num_f, аналогично с буквой d.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<stdlib.h> #include<string.h> int main() { int n, i, num_f, num_d; char S[1000]; scanf("%i", &n); getchar(); // чтобы не записался символ '\n' в строку S gets(S); // ввод строки S num_f = num_d = 0; // стартовое значение for (i = 0; i < n; i++) { if (S[i] == 'f') { num_f = 1; } if (S[i] == 'd') { num_d = 1; } } if (num_f == 1 && num_d == 1) { printf("yes"); } else { printf("no"); } return 0; }
Вам дана строка длины N, необходимо поменять регистр каждой буквы. То есть, если буква маленькая, то нужно поменять ее на большую и наоборот.
Входные данные:
Первая строка содержит одно целое число N (1 ≤ N ≤ 10^3) - длина строки.
Вторая строка содержит строку.
Выходные данные:
Выведите новую строку после замены всех букв.
Пример:
Ввод | Вывод |
4 ASEr |
aseR |
7 AndROid |
aNDroID |
Для решения задачи, нужно обратиться к таблице символов ASCII. Так как символы заглавных и строчных букв идут друг за другом, то нужно просто прибавить или отнять число 32, чтобы поменять регистр.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<stdlib.h> #include<string.h> int main() { int n, i; char S[1000]; scanf("%i", &n); getchar(); // чтобы не записался символ '\n' в строку S gets(S); // ввод строки S for (i = 0; i < n; i++) { if (S[i] >= 'a' && S[i] <= 'z') { S[i] = S[i] - 32; } else { S[i] = S[i] + 32; } } printf("%s", S); return 0; }
У Маши сломалась одна из кнопок на клавиатуре. Эта кнопка вместо точки печатает вот такой символ '#'. Маша пишет большой доклад и просит вас помочь ей изменить все символы
'#' на точки.
Входные данные:
Единственная строка содержит строку до 1000 символов.
Выходные данные:
Выведите отформатированную строку.
Пример:
Ввод | Вывод |
DFdr#ers#1e$fd# | DFdr.ers.1e$fd. |
Чтобы узнать длину строки, нужно воспользоваться функцией strlen(). Так же можно воспользоваться циклом while(S[i] != '\0'),
то есть цикл будет работать пока не закончится строка, не забывайте менять значение i.
На каждом шаге цикла нужно сравнить текущий элемент с символом '#', если это он, то присвоить этому элементу символ ' . ' (точка).
Вам дан текст, необходимо найти в нем количество цифр от 1 до 7 включительно.
Входные данные:
Единственная строка содержит строку до 1000 символов.
Выходные данные:
Выведите количество цифр.
Пример:
Ввод | Вывод |
9rd fr4sd321rE | 4 |
У Дениса залипает клавиша пробела, из-за этого в его тексте могут быть повторяющиеся пробелы. Вам нужно исправить текст Дениса, убрав все повтрояющиеся
пробелы. Пробелы в тексте не могут быть в начале или в конце.
Входные данные:
Единственная строка содержит строку от 1 до 10^5 символов.
Выходные данные:
Выведите отформатированную строку.
Пример:
Ввод | Вывод |
gfh rh   re | gfh rh re |
Андрей с другом придумали свой язык для общения в соцсети, чтобы никто не смог прочитать их сообщения. Точнее
они просто придумали для некоторых букв новое написание. В их языке
B = #, D = @, G = *, h = &, n = $,
x = ~, s = %. Вам нужно придумать алгоритм, который расшифрует их сообщения.
Входные данные:
Первая строка содержит одно целое число n (1 ≤ n ≤ 1000) - количество сообщений.
В следующих n строках записаны строки от 1 до 100 символов - сообщения друзей.
Выходные данные:
Выведите расшифровку для каждого сообщения.
Пример:
Ввод | Вывод |
2 gh#G$%rwe *hjE~**DKr |
ghBGnsrwe GhjExGGDKr |
Для этой задачи нужен массив строк.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
#define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<stdlib.h> #include<string.h> int main() { int n, l, i; char S[1000][100]; scanf("%i", &n); getchar(); for (int t = 0; t < n; t++) { gets(S[t]); } for (int t = 0; t < n; t++) { l = strlen(S); // длина строки S for (i = 0; i < l; i++) { if (S[t][i] == '#') { S[t][i] = 'B'; } if (S[t][i] == '@') { S[t][i] = 'D'; } if (S[t][i] == '*') { S[t][i] = 'G'; } if (S[t][i] == '&') { S[t][i] = 'h'; } if (S[t][i] == '$') { S[t][i] = 'n'; } if (S[t][i] == '~') { S[t][i] = 'x'; } if (S[t][i] == '%') { S[t][i] = 's'; } } printf("%s\n", S[t]); } return 0; }
Вам даны несколько текстов. Найти в каждом из них количество вхождений строки AB. Определите строку, в которой подстрока AB встречается больше
всего раз. Гарантируется, что строка AB есть как минимум в одной строке.
Входные данные:
Первая строка содержит одно целое число n (1 ≤ n ≤ 100) - количество текстов.
В следующих n строках записаны строки от 1 до 1000 символов - тексты.
Выходные данные:
Выведите индекс строки, у которой больше всего вхождений строки AB. Нумерация начинается с 1.
Пример:
Ввод | Вывод |
4 rreABFAB ABArsq krABfksABJAB ABd |
3 |
Вам дан текст, определите сумму цифр в этом тексте.
Входные данные:
Единственная строка содержит строку до 1000 символов.
Выходные данные:
Выведите сумму цифр в этом тексте.
Пример:
Ввод | Вывод |
JK32e8gfS78d | 28 |
Чтобы от номера символа цифры перейти к самой цифре нужно отнять от номера символа 48, так как в таблице цифры начинаются с символа 0, а его номер равен 48.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<stdlib.h> #include<string.h> int main() { int n, i, sum; char S[1000]; gets(S); n = strlen(S); // длина строки S sum = 0; // стартовое значение for (i = 0; i < n; i++) { if (S[i] >= '0' && S[i] <= '9') { sum = sum + (S[i] - 48); } } printf("%i", sum); return 0; }
Буква L считается разделительным символом, который делит строку на две части. Определите какая часть является наибольшей и выведите ее.
Входные данные:
Единственная строка содержит строку от 3 до 1000 символов.
Выходные данные:
В первой строке выведите размер наибольшей части.
Во второй строке выведите наибольшую строку.
Или в единственной строке выведите 0, если части равны.
Пример:
Ввод | Вывод |
JK32eL8gfS78d | 7 8gfS78d |
У Дениса опять проблемы с клавишей пробел, но в этот раз она вовсе сломалась. Поэтому он вместо пробела пишет две подряд идущих
буквы ws (whitespace). Так как Денис ваш друг, вам нужно помочь ему отредактировать текст. Гарантируется, что первым и последним символом не является пробел.
Входные данные:
Единственная строка содержит строку от 4 до 10^5 символов.
Выходные данные:
Выведите текст Дениса с пробелами.
Пример:
Ввод | Вывод |
RGrfwsder | RGrf der |
Вам даны числа в 16 системе счисления, вам нужно перевести каждое число из 16 с/с в 10 с/с.
Входные данные:
Первая строка содержит одно целое число t (1 ≤ t ≤ 100) - количество чисел.
В следующих t строках записаны числа длины от 1 до 10.
Выходные данные:
Выведите каждое число в 10 с/с.
Пример:
Ввод | Вывод |
4 10F9 6FB76C 534 413EA |
4345 7321452 1332 267242 |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<stdlib.h> #include<string.h> int main() { char S[101][11]; int t, i, j, l, r; long long int sum; scanf("%i", &t); for (int d = 0; d < t; d++) { scanf("%s", S[d]); } for (int d = 0; d < t; d++) { l = strlen(S[d]); // длина строки S[d] r = 1; sum = 0; for (i = l - 1; i >= 0; i--) { if (S[d][i] >= '0' && S[d][i] <= '9') { sum += (S[d][i] - 48) * r; } else { sum += (S[d][i] - 55) * r; } r *= 16; } printf("%i\n", sum); } return 0; }
Даны несколько текстов, нужно для каждого текста вывести самую длинную последовательность повторяющихся цифр.
Гарантируется, что в каждом тексте
есть самая большая такая последовательность.
Входные данные:
Первая строка содержит одно целое число t (1 ≤ t ≤ 100) - количество текстов.
В следующих t строках записаны строки от 1 до 1000 символов.
Выходные данные:
Выведите самую длинную последовательность повторяющихся цифр.
Пример:
Ввод | Вывод |
3 yr43erfd234t eter531 r34RGS4g |
234 531 34 |
Вам дана строка, удалите отрезок между первым и последним вхождением буквы F. Гарантируется, что в строке есть как минимум две буквы F.
Входные данные:
Единственная строка содержит строку от 3 до 1000 символов.
Выходные данные:
Выведите строку без отрезка. Если такого отрезка не существует, выведите 0.
Пример:
Ввод | Вывод |
S43FrEFdcFgwQ | S43FFgwQ |
56fdFFde | 0 |
Вам даны n строк, содержащие буквы I(1), V(5), X(10), L(50). Если бо́льшая цифра стоит
перед меньшей, то они складываются, если же меньшая стоит перед большей, то меньшая вычитается из большей.
Необходимо для каждой строки перевести число из римской с/с в арабскую.
Входные данные:
Первая строка содержит одно целое число t (1 ≤ t ≤ 100) - количество строк.
В следующих t строках записаны строки до 10 символов.
Выходные данные:
Для каждого запроса выведите ответ.
Пример:
Ввод | Вывод |
4 XI XXIV XLI III |
11 24 41 3 |
Code.C
© Copyright Павел Калашников 2021
обратная связь code.c04@mail.ru